package com.jwell.oms.base.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.jwell.framework.mybatis.mapper.AbstractMapper;
import com.jwell.oms.base.entity.BaseProduct;

/**
 * 
 * @FileName: BaseProductMapper.java
 * @Company: 成都积微物联电子商务有限公司
 *
 * @author: wangdan
 * @Version: V1.0
 * @date: 2016年11月12日
 *
 * @Description: 物料编码表
 */
public interface BaseProductMapper extends AbstractMapper<BaseProduct> {

	/**
	 * 查询
	 * 
	 * @Param
	 * @return List<BaseProduct>
	 * @author wangdan
	 * @date 2016年11月16日
	 */
	List<BaseProduct> findList();

	/**
	 * 查询整个对象
	 * @Param @return
	 * @return List<BaseProduct>
	 * @author wangdan
	 * @date 2017年1月9日
	 */
	List<BaseProduct> findListParam(@Param("prodectName") String prodectName);
	/**
	 * 查询
	 * 
	 * @param baseProduct
	 * 
	 * @return List<BaseProduct>
	 * @author wangdan
	 * @date 2016年11月16日
	 */
	List<BaseProduct> findListChild(BaseProduct baseProduct);

	/**
	 * 查询子节点
	 * @Param baseProduct
	 * @return List<Map<String,Object>>
	 * @author wangdan
	 * @date 2017年1月5日
	 */
	List<Map<String, Object>> findListChildAsynchronous(BaseProduct baseProduct);

	/**
	 * 根据id查询
	 * 
	 * @param id
	 * @return
	 */
	BaseProduct getById(Long id);
	
	/**
	 * 根据产品编码查询
	 * @param productCode
	 * @return
	 * @author liuyangbin
	 * @date 2017年1月20日
	 */
	BaseProduct getByCode(String productCode);

	List<BaseProduct> findListDelete(BaseProduct baseProduct);

	Long getParentId(@Param("productCode") String productCode);

	/**
	 * 根据parentId返回实体
	 * 
	 * @param parentId
	 * @return
	 * @author chen
	 * @date 2016年12月15日
	 */
	BaseProduct getEntity(@Param("parentId") String parentId);

	/**
	 * 根据类型 查询已勾选 一级菜单
	 * 
	 * @param oderType
	 * @return
	 * @author chen
	 * @date 2016年12月15日
	 */
	List<BaseProduct> findListOrder(@Param("oderType") String oderType);

	/**
	 * 根据类型 查询已勾选 子节点
	 * 
	 * @param oderType
	 * @param parentId
	 * @return
	 * @author chen
	 * @date 2016年12月15日
	 */
	List<BaseProduct> findListOrder1(@Param("oderType") String oderType);

	List<BaseProduct> findListZ(@Param("id") Long id);

	/**
	 * 查询第一级
	 * 
	 * @param prodectName
	 * 
	 * @return List<Map<String,Object>>
	 * @author wangdan
	 * @date 2017年1月3日
	 */
	List<Map<String, Object>> findListTreeByProductName(@Param("prodectName") String prodectName);
	
	/**
	 * 验证是否还有子节点：返回0-没有子节点，其它有子节点
	 * @Param prodectName
	 * 
	 * @return Long
	 * @author wangdan
	 * @date 2017年1月6日
	 */
	Long countByProdectName(@Param("prodectName") String prodectName);
	
	/**
	 * 根据parentid得到树实体
	 * @Param @param parentId
	 * @Param @return
	 * @return BaseProduct
	 * @author wangdan
	 * @date 2017年1月9日
	 */
	List<BaseProduct> getBaseProductEntitys();
	
	/**
	 * 统计符合条件的节点
	 * @param   prodectName
	 * @param  parentId
	 * @return Long
	 * @author wangdan
	 * @date   2017年1月16日
	 */
	Long getCountBaseProduct(@Param("prodectName") String prodectName,@Param("parentId") String parentId);
}